home *** CD-ROM | disk | FTP | other *** search
- ;Playdemo.asm
- ;(Plays a packed amd)
- ;
- ;How to use the player of Amusic (in polling mode!!!)
- ;6.12.1995 by Conqueror / ε£¥$$ì$
- ;
- ;Link this with amdobj.obj!!!
- ;
-
- EXTRN _InitAdlib : near
- EXTRN _AdlibPlayer : near
- EXTRN _StopAdlib : near
-
- EXTRN _AdlibState : byte
-
-
- .model small
- .stack
- .386
- .data
-
- FileName db 14 dup(0)
- fhandle dw 0
-
- WorkBuffer db 522h dup(?)
-
-
- ModBase label byte
- db 50000 dup(?)
-
-
-
- ;####### CODE #########
-
- .code
- maincode:
- mov ax,@data
- mov ds,ax
-
- mov bx,82h
- mov di,offset FileName
- fnam_loop:
- mov cl,es:[bx]
- cmp cl,0Dh
- jz fnam_eos
- cmp cl,20h
- jz fnam_eos
- or cl,cl
- jz fnam_eos
- mov ds:[di],cl
- inc di
- inc bx
- cmp bx,82h+12
- jb fnam_loop
- fnam_eos:
- mov es,ax
-
-
- ;------ Load the mod
-
- mov ax,3D00h
- mov dx,offset FileName
- xor cl,cl
- int 21h
- jc LoadError
- mov [fhandle],ax
-
- mov ah,3Fh
- mov bx,[fhandle]
- mov cx,50000
- mov dx,offset ModBase
- int 21h
-
- mov ah,3Eh
- mov bx,[fhandle]
- int 21h
-
-
- ;------ Init the mod!!!
- mov si,offset ModBase
- mov di,offset WorkBuffer
- mov al,1 ;0=irq_mode 1=polling_mode
- call _InitAdlib
-
- cmp cs:[_AdlibState],0
- jz LoadError ;No adlib present!?
-
- PlayLoop: ;*** MAINLOOP *****
-
-
- ;------ Wait for retrace!!!
- mov dx,03DAh
- Wait1: in al,dx
- and al,8
- jnz short Wait1
- Wait2: in al,dx
- and al,8
- jz short Wait2
-
- mov si,offset ModBase
- mov di,offset WorkBuffer
- call _AdlibPlayer
-
-
- ;------ check ESC key
- in al,60h
- dec al
- jnz short PlayLoop
-
-
- ;------ Fuck off!!!
- call _StopAdlib
-
- LoadError:
- mov ah,04Ch ;BYE
- int 21h
-
- end maincode
-